#ifndef _FT6336_H_
#define _FT6336_H_	
#ifdef __cplusplus
extern "C" {
#endif	

#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <stdlib.h>
#include <stdint.h>

#include <hal/gpio_types.h>

// lvgl内置中的屏幕检测机制，只能实现一个点的检测
#define CTP_MAX_TOUCH 			  1 	

#define FT6236_I2C_SLAVE_ADDR     0x38

/// @brief  I2C channel select
#define TOUCH_I2C_PORT             		 I2C_NUM_0

/// @brief I2c related configurations
#define I2C_MASTER_SCL_IO                GPIO_NUM_18
#define FT_RST    				         GPIO_NUM_8	    //FT5206复位引脚
#define I2C_MASTER_SDA_IO                GPIO_NUM_3
#define FT_INT    				         GPIO_NUM_46		//FT5206中断引脚

// tf6336建议参数(40MHz和100ms)
#define I2C_MASTER_FREQ_HZ               (40*10000)
#define I2C_RE_WR_MS					 (1000)

//I2C读写命令	
#define FT_CMD_WR 				0X70    	//写命令
#define FT_CMD_RD 				0X71		//读命令
  
//FT5426 部分寄存器定义 
#define FT_DEVIDE_MODE 			0x00   		//FT6336模式控制寄存器
#define FT_REG_NUM_FINGER       0x02		//触摸状态寄存器

#define FT_TP1_REG 				0X03	  	//第一个触摸点数据地址
#define FT_TP2_REG 				0X09		//第二个触摸点数据地址

#define FT_ID_G_CIPHER_MID      0x9F        //芯片代号（中字节） 默认值0x26
#define FT_ID_G_CIPHER_LOW      0xA0        //芯片代号（低字节） 0x01: Ft6336G  0x02: Ft6336U 
#define	FT_ID_G_LIB_VERSION		0xA1	    //版本		
#define FT_ID_G_CIPHER_HIGH     0xA3        //芯片代号（高字节） 默认0x64 
#define FT_ID_G_MODE 			0xA4   	    //FT6636中断模式控制寄存器
#define FT_ID_G_FOCALTECH_ID    0xA8        //VENDOR ID 默认值为0x11
#define FT_ID_G_THGROUP			0x80   		//触摸有效值设置寄存器
#define FT_ID_G_PERIODACTIVE	0x88   		//激活状态周期设置寄存器

#define TP_PRES_DOWN 0x80  //触屏被按下	  
#define TP_CATH_PRES 0x40  //有按键按下了 	  
										    
//触摸屏控制器
typedef struct {
#if	0
	uint8_t (*init)(void);			// 初始化触摸屏控制器
	uint8_t (*scan)(void);			// 扫描触摸屏.0,屏幕扫描;1,物理坐标;	
#endif 
	uint16_t x[CTP_MAX_TOUCH]; 		// 当前坐标
	uint16_t y[CTP_MAX_TOUCH];		// 电容屏有最多5组坐标,电阻屏则用x[0],y[0]代表:此次扫描时,触屏的坐标,用
									// x[4],y[4]存储第一次按下时的坐标. 
	uint8_t  sta;					// 笔的状态 
									// b7:按下1/松开0; 
	                            	// b6:0,没有按键按下;1,有按键按下. 
									// b5:保留
									// b4~b0:电容触摸屏按下的点数(0,表示未按下,1表示按下)
}_m_tp_dev;

extern _m_tp_dev tp_dev;	 	//触屏控制器在touch.c里面定义


void lv_f6336_init(void);


#ifdef __cplusplus
} /*extern "C"*/
#endif

#endif
